feat: add ColdBox performance analysis suite (BE vs stable 8.1)#666
Merged
Conversation
Adds tests/perf-harness/ — a complete performance benchmarking suite that
compares the bleeding-edge ColdBox development branch against stable 8.1
across four CFML engines: BoxLang, BoxLang-CFML, Adobe CF 2025, Lucee 7.
Structure:
- app/ — shared ColdBox harness app (handlers, views, models,
interceptors, perf-module HMVC module)
- be-app/ — bootstrap that maps /coldbox to the repo root (BE branch)
- stable-app/ — bootstrap that maps /coldbox to installed ColdBox 8.1
- PerformanceSuite.cfc — CommandBox task runner orchestrating all tests
- reports/ — output directory for generated HTML + Markdown reports
Test scenarios (5 per version):
health — routing only, no DI, no view (baseline)
simple-view — view rendering + layout pipeline
json-api — WireBox DI + JSON renderData
complex-view — multi-model injection + view data loops
module — HMVC module routing + module-scoped DI
Measurements:
cold start — server restart + cleared bytecode cache, first response
app bootstrap — ColdBox onApplicationStart re-init timing
warm latency — min/avg/P95/P99 over N iterations per scenario
throughput — sequential RPS over configurable duration
Reports:
perf-report-{ts}.md — Markdown with comparison tables + deltas
perf-report-{ts}.html — HTML with Chart.js bar charts + Bootstrap tables
New box.json scripts:
perf:run — full suite (all engines, both versions)
perf:run:quick — fast single-engine run without cold start
perf:be — BE version only
perf:stable — stable version only
perf:lucee — Lucee 7 engine only
perf:adobe — Adobe CF 2025 engine only
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01A9URDbRHAkreUvNUjFdmfG
…tstrap - Fix measureAppBootstrap reinit URL: use & not ? to append bsReinit=1 param - Switch all 5 SCENARIOS from SES URLs to event-style ?event= URLs for reliability - Fix health handler: use event.renderData() instead of return "ok" to bypass layout - Add pathInfoProvider to Router.cfc for Tuckey forward URI extraction - Fix Application.cfc pseudo-constructor: remove var keyword (BoxLang incompatible outside functions) - Change COLDBOX_CONFIG_FILE to dot-notation path (cbperfapp.config.ColdBox) not filesystem path - Add index.cfm entry points for both be-app and stable-app sub-directories - Add Tuckey urlrewrite.xml to forward sub-path requests to correct index.cfm - Add perf-specific server configs for all 4 engines with correct webroot (../../) - Add .gitignore for stable-app/coldbox/ (box install artifact, not tracked) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01A9URDbRHAkreUvNUjFdmfG
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds tests/perf-harness/ — a complete performance benchmarking suite that
compares the bleeding-edge ColdBox development branch against stable 8.1
across four CFML engines: BoxLang, BoxLang-CFML, Adobe CF 2025, Lucee 7.
Structure:
interceptors, perf-module HMVC module)
Test scenarios (5 per version):
health — routing only, no DI, no view (baseline)
simple-view — view rendering + layout pipeline
json-api — WireBox DI + JSON renderData
complex-view — multi-model injection + view data loops
module — HMVC module routing + module-scoped DI
Measurements:
cold start — server restart + cleared bytecode cache, first response
app bootstrap — ColdBox onApplicationStart re-init timing
warm latency — min/avg/P95/P99 over N iterations per scenario
throughput — sequential RPS over configurable duration
Reports:
perf-report-{ts}.md — Markdown with comparison tables + deltas
perf-report-{ts}.html — HTML with Chart.js bar charts + Bootstrap tables
New box.json scripts:
perf:run — full suite (all engines, both versions)
perf:run:quick — fast single-engine run without cold start
perf:be — BE version only
perf:stable — stable version only
perf:lucee — Lucee 7 engine only
perf:adobe — Adobe CF 2025 engine only
Co-Authored-By: Claude Sonnet 4.6 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session_01A9URDbRHAkreUvNUjFdmfG